The present invention is directed to three-dimensional computer graphics. More particularly, the present invention is directed to manipulation objects in a three-dimensional computer graphics scene.
Three-dimensional (xe2x80x9c3-Dxe2x80x9d) computer graphics programs are rapidly increasing in popularity because, for one, they allow graphical scenes to appear more realistic on a two-dimensional (xe2x80x9c2-Dxe2x80x9d) computer display. However, one problem with the typical 3-D computer graphics program is placing and manipulating objects in a 3-D scene. Placement is typically not a problem in 2-D scenes (e.g., drawing programs) because both relevant dimensions are directly visible to the user. Because 3-D scenes are limited to projections of the scene onto a 2-D computer display or screen, direct manipulations of objects is more difficult. Further compounding the difficulty is that most scenes are presented with a perspective projection (making objects in the back appear smaller) to aid in the visual interpretation of the scene.
The most common input device for 3-D graphics programs is a computer mouse, which is inherently a 2-D device in spite of the recent addition of a wheel to some models. A common way to map mouse input signals to object movement is to have two or more modes. In one mode, mouse movement maps to movement of the object in a plane parallel to the screen. In another mode (e.g., when a keyboard key is pressed) mouse movement maps to movement in an orthogonal plane (e.g., parallel to the apparent floor of the scene). The mouse movement is always one to one with cursor movement, but the relationship of cursor movement to object movement can be important. A common cursor-object mapping is to interpret a fixed cursor movement with a fixed movement in the scene.
Another known method of cursor-object mapping is referred to as xe2x80x9cprojective mappingxe2x80x9d, in which the object position, constrained by the movement plane, stays under the cursor. Typically, a projective mapping also implies that object movement is constrained to planes oriented with the scene rather than to a graphical xe2x80x9ccameraxe2x80x9d that determines the field of view of the user. This mapping is not linear in the 3-D scene (equivalent cursor movements further away give larger object movements than those closer), but gives the user the feeling that the user is actually holding the object, since the object remains under the cursor.
One problem with projective mapping occurs when the plane of movement is very nearly parallel to the line between the eye-point, or xe2x80x9ccameraxe2x80x9d, and the object. In this case, very small movements of the cursor result in very large movements of the object. For example, the difference between the object up front versus the object at the back may be only a handful of pixels on the screen, so a very small cursor movement results in a huge object movement. In a severe case, there may be no pixel difference, and the user won""t be able to move the object at all.
The common solution to this problem is for the user to move the viewing position to one in which the user has more control over the object. However, this solution generates at least two problems. First, the user must choose and move to an appropriate position for successful object manipulation. Second, the user usually really wanted to be in the original position, so the user is now faced with the job of returning to it after the manipulation. The user often deals with the first problem by making a minimal movement. The user does this because movement in 3-D scenes, especially ones involving changes in viewing angle, are difficult, and therefore the user wants to minimize this difficulty for both the first move and the return. The result of this minimal move is often that it is too minimal, not providing enough control over the object. After losing time trying to make the placement in the first new position, the user moves to a more advantageous location. While this may solve the manipulation problem, the intermediate move wastes time and increases the difficulty associated with returning to the original location.
Based on the foregoing, there is a need for an improved apparatus and method for manipulating objects in a 3-D graphical scene.
One embodiment of the present invention is a system for manipulating an object in a three-dimensional graphical scene that includes a graphical camera in a first position and a first orientation. The system receives an object manipulation indication and identifies an improved viewing location of the camera for manipulating the object. The system then moves the camera to a second position and second orientation based on the improved viewing location. Finally, the system receives an end of object manipulation indication and moves the camera back to the first position and first location.